Данный параграф подразумевает, что Вы знакомы с World Wide Web и имеете
понятие об языке HTML и установке WWW сервера. Если нет, мы настоятельно
рекомендуем Вам обратиться к соответсвующей литературе для более ясного
понимания описанных ниже возможностей LDBF.
Для обеспечения доступа к LDBF серверу из среды WWW используются программы ldbfcgi и ldbfdcgi. Они реализуют стандартный интерфейс CGI для доступа к элементам WWW форм и вывода информации на броузер клиента. ldbfdcgi отличается от ldbfcgi тем, что использует разделяемую память для доступа к серверу, расположенному на одной с ldbfdcgi машине. Данные программы выполняют S-Lang скрипты, в которых Вы можете, используя LDBF API извлекать данные из таблиц сервера и отсылать их клиенту WWW, а также получать информацию введенную клиентом WWW с помощью форм, написанных на языке HTML.
ldbfcgi(ldbfdcgi) можно вызывать из командной строки,в этом случае они используются как интерпретатор SLang.
Вызов выглядит следующим образом:
Параметры будут находится в переменной query_string. Если в скрипте есть синтаксическая ошибка,информация о ней выдается в файл /tmp/ldbfcgi.log
Дополнительно к стандартному набору команд доступа к LDBF
серверу, в скриптах, выполняемых ldbfcgi и ldbfdcgi добавлено несколько
специфичных для HTML команд:
Возвращает значение элемента HTML формы item. Возвращаемое
значение является строковой переменной;
выводит строку клиенту WWW на его броузер.
выводит строку в файл /tmp/ldbfcgi.log, который находится
в том же каталоге откуда был запущен сервер.
Возвращает 1 если подсоединенный пользователь удовлетворяет маске,указанной параметром host.Данная функция работает только в скриптах, выполняемых прораммами ldbfcgi,ldbfcdgi.
Пример:
if(ldbfCheckRemote("*kharkov.ua")) {
....
}
Данная функция устанавливает идентификатор сервера,с которым
требуется соединение.Данная функция используется в скритах,выполняемых
с помощью программы ldbfdcgi^которая использует разделяемую память для
соединения с сервером.В качестве параметра необходимо указать ID сервера,
с которым он был звпущен или 0 для значения по умолчанию.Если сервер,например,
был запущен как:
В строке 'str' ищется значение переменной
'Var', которое может быть одним из элементов списка 'var_list'.
Элементы в списке располагаются через запятую. Функция возвращает
значение найденного элемента.
Пример:
% Переменная 'date' после выполнения функции будет
% содержать строку 'date'
date = ldbfGetHTMLValue("<INPUT TYPE=\"text\"NAME=\"date\"VALUE=\"\">",
"NAME","date,name,zip,address")
В строке 'str' изменяется значение переменной 'Var', которое
может быть одним из элементов списка 'var_list'. Элементы в списке располагаются
через запятую. Функция возвращает строку 'str' c измененным значением
'Var'. Если 'Var' не найдена, возвращается не измененная строка.
Пример:
% Изменяем значение 'VALUE'.
ldbfRelaceHTMLValue("<INPUTTYPE=\"text\"
NAME=\"name\"
VALUE=\"\">","VALUE","JohnSmith"));
% Фунция возвратит строку
% <INPUTTYPE="text"NAME="name"VALUE="JohnSmith">
В строке 'str' удаляется переменная 'Var' вместе со
своим значением. Функция возвращает строку 'str'. Если 'Var' не найдена,
возвращается не измененная строка.
Пример:
% Удаляем переменную 'VALUE'
% <INPUTTYPE="text"NAME="name"VALUE="JohnSmith">
ldbfRemoveHTMLValue("<INPUTTYPE=\"text\"
NAME=\"name\"
VALUE=\"\">");
% Функция возвращает строку <INPUT TYPE="text" NAME="name" >
Вставляет строку 'Var' в строку 'str'.
Пример:
% Вставляем значение переменной 'VALUE' в строку
% <INPUT TYPE="text" NAME="name" >
ldbfAddHTMLValue("<INPUT TYPE=\"text\"
NAME=\"name\">","VALUE=\"JohnSmith\"");
%Функция возвращает строку
%<INPUTTYPE="text"NAME="name"VALUE="John Smith">
Возвращает строку, содержащую список полей таблицы 'db'. Имена
полей разделены запятыми.
Пример:
variablefld_list=ldbfGetFieldList("personal");
% 'fld_list' может содержать"name,address,zip,country,phone"
если HTML-форма предназначена для ввода данных в таблицу 'db'
и имена строк ввода соответствуют именам полей данной таблицы, то используя
эту функцию можно получить данные ввода в виде пригодном для использования
в функциях ldbfInsert() и ldbfUpdate().
Пример HTML страницы:
% <INPUTTYPE="text"NAME="name"VALUE="John">
% <INPUT TYPE="text" NAME="address" VALUE="New York">
% <INPU TYPE="text"NAME="zip"VALUE="">
% <INPUT TYPE="text" NAME="phone" VALUE="2345678">
% Изменение таблицы "personal".
% После вызова,ldbfConstructValues() возвратит строку:
% "John,New York,,2345678"
% Исползуя ldbfUpdate(), изменяем значения таблицы
% "personal"
ldbfUpdate("personal",ldbfGetFieldsList("personal"),
ldbfConstructValues("personal"));
И переменных:
Для вызова S-Lang скрипта и доступа к LDBF серверу необходимо произвести следующие установки:
- переписать файл ldbfcgi (ldbfdcgi) в каталог, где хранятся все CGI программы Вашего WWW сервера. Для NCSA и Apache httpd это каталог ~/cgi-bin.
- переписать Ваши S-Lang скрипты в этот же каталог
или в каталог, где расположены HTML страницы. Для NCSA и Apache httpd это
каталог ~/htdocs.
-создать на Вашей WWW странице ссылку на ldbfcgi(ldbfdcgi) программу
и передать ей в качестве параметра имя S-Lang скрипта.
Например, если скрипты расположены в каталоге cgi-bin то вызов будет
выглядеть:
<P><A HREF="http://localhost/cgi-bin/ldbfcgi?index.sl">
"Index.</A>
Если же скрипты расположены в каталоге где находяться
HTML страницы, т.е. в каталоге ~/htdocs то вызов скрипта выглядит по другому:
<P><A HREF="http://localhost/cgi-bin/ldbfcgi/index.sl">
"Index.</A>
Если скрипт находится в подкаталоге scripts:
<P><A HREF="http://localhost/cgi-bin/ldbfcgi/scripts/index.sl">
"Index.</A>
Пример страницы, в которой клиент вводит данные, а затем эти
данные передаются серверу для сохранения:
<TITLE>Registration</TITLE>
<HEAD>Guest registration</HEAD>
<P>
<FORM method=POST
ACTION="http://localhost/cgi-bin/ldbfcgi?regist.sl">
<P><H3>Enter your name </H3>
Name: <INPUT TYPE="text" NAME="name" VALUE="" MAXLENGTH="32">
<H3><U>Where you from?</U></H3>
<H4><I>Select location, please:</I></H4><OL>
<INPUT TYPE="radio" CHECKED NAME="loc" VALUE="sng"> ex-USSR
INPUT TYPE="radio" NAME="loc" VALUE="foren"> Other countries </OL>
<INPUT type="submit" VALUE="Save!"></FORM>
После нажатия кнопки "Save!" сервер запустит
скрипт 'regist.sl'. Например,он может выглядеть следующим образом:
variable name,location; name =ldbfGetCGIValue("name"); % берем значения location = ldbfGetCGIValue("loc"); if(ldbfConnect("localhost")) { % соединяемся с сервером ldbfInsert("guests","name,location", % заносим новую запись Sprintf("%s,"%s",name,location,2)); }
или
ldbfInsert ("quest", "name, Location",
ldbfConstruct ("quest"));